package com.irdstudio.cdp.pboc.service.impl;

import com.irdstudio.basic.framework.core.base.FrameworkService;
import com.irdstudio.cdp.pboc.service.dao.QueryReportDao;
import com.irdstudio.cdp.pboc.service.domain.QueryReport;
import com.irdstudio.cdp.pboc.service.facade.QueryReportService;
import com.irdstudio.cdp.pboc.service.vo.QueryReportVO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
import java.util.Objects;
/**
 * <p>ServiceImpl: 查询基本信息表				<p>
 * @author ligm
 * @date 2018-12-26
 */
@Service("queryReportService")
public class QueryReportServiceImpl implements QueryReportService, FrameworkService {
	
	private static Logger logger = LoggerFactory.getLogger(QueryReportServiceImpl.class);

	@Autowired
	private QueryReportDao queryReportDao;
	
	/**
	 * 新增操作
	 */
	public int insertQueryReport(QueryReportVO inQueryReportVo)  throws Exception {
		logger.debug("当前新增数据为:"+ inQueryReportVo.toString());
		int num = 0;
		try {
			QueryReport queryReport = new QueryReport();
			beanCopy(inQueryReportVo, queryReport);
			num = queryReportDao.insertQueryReport(queryReport);
		} catch (Exception e) {
			logger.error("新增数据发生异常!", e);
			num = -1;
			throw e;
		}
		logger.debug("当前新增数据条数为:"+ num);
		return num;
	}

	/**
	 * 删除操作
	 */
	public int deleteByPk(QueryReportVO inQueryReportVo)  throws Exception {
		logger.debug("当前删除数据条件为:"+ inQueryReportVo);
		int num = 0;
		try {
			QueryReport queryReport = new QueryReport();
			beanCopy(inQueryReportVo, queryReport);
			num = queryReportDao.deleteByPk(queryReport);
		} catch (Exception e) {
			logger.error("删除数据发生异常!", e);
			num = -1;
			throw e;
		}
		logger.debug("根据条件:"+ inQueryReportVo +"删除的数据条数为"+ num);
		return num;
	}


	/**
	 * 更新操作
	 */
	public int updateByPk(QueryReportVO inQueryReportVo)  throws Exception {
		logger.debug("当前修改数据为:"+ inQueryReportVo.toString());
		int num = 0;
		try {
			QueryReport queryReport = new QueryReport();
			beanCopy(inQueryReportVo, queryReport);
			num = queryReportDao.updateByPk(queryReport);
		} catch (Exception e) {
			logger.error("修改数据发生异常!", e);
			num = -1;
			throw e;
		}
		logger.debug("根据条件:"+ inQueryReportVo +"修改的数据条数为"+ num);
		return num;
	}
	
	/**
	 * 需求编号:2019D0519
	 * 问题编号:
	 * 开发人员: caoxin
	 * 创建日期:2019/7/19
	 * 功能描述:通过reportId获取征信报告
	 * 修改日期:2019/7/19
	 * 修改描述:
	 */
	public QueryReportVO queryByPk(QueryReportVO inQueryReportVo) {
		
		logger.debug("当前查询参数信息为:"+ inQueryReportVo);
		try {
			QueryReport queryQueryReport = new QueryReport();
			beanCopy(inQueryReportVo, queryQueryReport);
			QueryReport queryRslQueryReport = queryReportDao.queryByPk(queryQueryReport);
			if (Objects.nonNull(queryRslQueryReport)) {
				QueryReportVO outQueryReportVo = beanCopy(queryRslQueryReport, new QueryReportVO());
				logger.debug("当前查询结果为:"+ outQueryReportVo.toString());
				return outQueryReportVo;
			} else {
				logger.debug("当前查询结果为空!");
			}
		} catch (Exception e) {
			logger.error("查询数据发生异常!", e);
			throw e;
		}
		return null;
	}


	/**
	 * 查询用户权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<QueryReportVO> queryAllOwner(QueryReportVO queryReportVo)  throws Exception {

		logger.debug("当前查询本人所属数据信息的参数信息为:");
		List<QueryReportVO> list = null;
		try {
			List<QueryReport> queryReports = queryReportDao.queryAllOwnerByPage(queryReportVo);
			logger.debug("当前查询本人所属数据信息的结果集数量为:"+ queryReports.size());
			pageSet(queryReports, queryReportVo);
			list = (List<QueryReportVO>) beansCopy(queryReports, QueryReportVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
			throw e;
		}
		
		return list;
	
	}


	/**
	 * 查询当前机构权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<QueryReportVO> queryAllCurrOrg(QueryReportVO queryReportVo)  throws Exception {

		logger.debug("当前查询本人所属机构数据信息的参数信息为:");
		List<QueryReport> queryReports = queryReportDao.queryAllCurrOrgByPage(queryReportVo);
		logger.debug("当前查询本人所属机构数据信息的结果集数量为:"+queryReports.size());
		List<QueryReportVO> list = null;
		try {
			pageSet(queryReports, queryReportVo);
			list = (List<QueryReportVO>) beansCopy(queryReports, QueryReportVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
			throw e;
		}
		
		return list;
	
	}


	/**
	 * 查询当前机构及下属机构权限数据
	 */
	@SuppressWarnings("unchecked")
	public List<QueryReportVO> queryAllCurrDownOrg(QueryReportVO queryReportVo)  throws Exception {

		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:");
		List<QueryReport> queryReports = queryReportDao.queryAllCurrDownOrgByPage(queryReportVo);
		logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ queryReports.size());
		List<QueryReportVO> list = null;
		try {
			pageSet(queryReports, queryReportVo);
			list = (List<QueryReportVO>) beansCopy(queryReports, QueryReportVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
			throw e;
		}
		
		return list;
	
	}

	/**
	 * 需求编号:2019D0519
	 * 问题编号:
	 * 开发人员: caoxin
	 * 创建日期:2019/7/19
	 * 功能描述:通过用户身份证号码查询所有征信报告
	 * 修改日期:2019/7/19
	 * 修改描述:
	 */
	@SuppressWarnings("unchecked")
	public List<QueryReportVO> queryReportId(QueryReportVO queryReportVo)  throws Exception {

		logger.debug("当前查询本人所属机构及以下数据信息的参数信息为:");
		List<QueryReport> queryReports = queryReportDao.queryReportId(queryReportVo);
		logger.debug("当前查询本人所属机构及以下数据信息的结果集数量为:"+ queryReports.size());
		List<QueryReportVO> list = null;
		try {
			pageSet(queryReports, queryReportVo);
			list = (List<QueryReportVO>) beansCopy(queryReports, QueryReportVO.class);
		} catch (Exception e) {
			logger.error("数据转换出现异常!", e);
			throw e;
		}

		return list;

	}


//	@author:liuty
//	@date:2019/10/17
//	涉及产品:税e贷
//	功能:根据证件类型和证件号码查找报表编号
//	原因:增量投产只投了接口没投实现，编译报错因此注释，不影响实际业务
//	/**
//	 * 
//	 * TODO 根据证件类型和证件号码查找报表编号<br>
//	 * @author wanglihua
//	 * @since 2019年5月8日 下午4:21:34
//	 * @date 2019年5月8日 下午4:21:34
//	 * @version 0.1 
//	 */
//	@Override
//	public QueryReportVO queryByCert(String certNo) {
//		logger.debug("当前查询参数信息为:"+ certNo);
//        try {
////            OrgWhiteListE queryOrgWhiteListE = new OrgWhiteListE();
////            beanCopy(orgCode, queryOrgWhiteListE);
//        	QueryReport queryRslOrgWhiteListE = queryReportDao.queryByCert(certNo);
//            if (Objects.nonNull(queryRslOrgWhiteListE)) {
//            	QueryReportVO outQueryReportVO = beanCopy(queryRslOrgWhiteListE, new QueryReportVO());
//                logger.debug("当前查询结果为:"+ outQueryReportVO.toString());
//                return outQueryReportVO;
//            } else {
//                logger.debug("当前查询结果为空!");
//            }
//        } catch (Exception e) {
//            logger.error("查询数据发生异常!", e);
//        }
//        return null;
//	}
//
	
	
	
//	@author:liuty
//	@date:2019/10/17
//	涉及产品:税e贷
//	功能:根据证件类型和证件号码查找报表编号
//	原因:增量投产只投了接口没投实现，编译报错因此注释，不影响实际业务
//	/**
//	 * 
//	 * TODO 查找客户的征信报告查询记录<br>
//	 * @author wanglihua
//	 * @since 2019年6月11日 上午11:40:05
//	 * @date 2019年6月11日 上午11:40:05
//	 * @version 0.1 
//	 */
//	@Override
//	public List<QueryReportVO> queryZXQueryRecordByPk(QueryReportVO vo) {
//		
//		return null;
//	}
}
